1. Field of the Invention
This invention pertains generally to enterprise computer systems, computer networks, embedded computer systems, wireless devices such as cell phones and PDAs, computer systems, and more particularly to methods, systems and procedures (i.e., programming) for providing application isolation for multiple applications running on a host operating system and for providing usage billing for applications running within the isolated environments. The invention further provides application usage billing for applications running within a “cloud computing” or “hosted environment” with or without isolated environments.
2. Description of Related Art
In many environments one of the most important features is to ensure that one running application doesn't affect other running applications, and that the crash of one application doesn't compromise other running applications. In many environments applications share system resources, libraries and hardware, which expose subtle interconnects between seemingly unrelated applications.
Several approaches have been developed addressing this fundamental problem. The first level of application isolation is provided by the operating system. Modern operating systems such as Linux, UNIX, Windows2000, NT, XP and Vista provide some level of application isolation through the use of processes, and the underlying hardware memory management unit. The use of processes generally ensure than one running application process cannot address memory owned by other processes. This first level of isolation does not address the use of shared resources, such as files, file systems, shared memory, and libraries, so other approaches have been developed.
The present invention builds on the teachings in U.S. application Ser. No. 12/813,593 wherein Havemose teaches “SYSTEM AND METHOD FOR APPLICATION ISOLATION WITH LIVE MIGRATION”, and U.S. application Ser. No. 12/813,618 wherein Havemose teaches “SYSTEM AND METHOD FOR HIERARCHICAL INTERCEPTION WITH ISOLATED ENVIRONMENTS” collectively identified as “Havemose” throughout the disclosures. Havemose discloses system and methods for creating and maintaining isolated environments wherein applications can be installed and run without interfering with any other applications on the host system. Havemose further discloses system and methods for creating isolated environments and for the use of precreated isolated environment as “installation-free” images that can run on a client without requiring direct application installation on the client, and systems for hierarchical interception. Havemose teaches an approach that works on commodity operating system using off-the-shelf applications. Havemose was incorporated herein by reference in its entirety above.
In a “Cloud computing” environment, where resources and applications are dynamically assigned and accessed remotely a related challenge is one of charging for the use of the application. Historically, applications were purchased by a corporation, installed in the company's datacenter and managed by in-house IT staff. With the shift to cloud computing, the applications are hosted somewhere in the internet “cloud” and accessed remotely. The actual end-user or the end-user's IT group are typically not responsible for installing, hosting, and maintaining the application.
A variety of approaches have been designed to manage billing for application use. Historically software was purchased and paid for once and keep updated using an annual maintenance contract. With the move to hosted applications, the hosting provider needs a flexible way to do “usage billing” where the user pays based on actual use patterns. Existing billing-mechanisms are often either fixed one-time licenses as just described, or require custom applications, custom operating systems, or custom hardware.
In U.S. Pat. No. 5,047,928 and U.S. Pat. No. 5,155,680 Wiedmer teach “Billing System for Computer Software” and “Billing System for Computing Software” respectively. The teachings rely on a combination of algorithms and custom hardware security and billing modules. The billing modules are replaced periodically and the billing information is read from the billing module. In a typical cloud environment requiring custom hardware and replacement of modules to do billing is impractical and not well suited to hosting in a datacenter. Furthermore the teachings do not address usage billing.
In U.S. Pat. No. 5,235,290 Cauffman et al teach “Billing System with Data Indexing”. The teachings describe a pre-processing mechanism to facilitate display, under the control of a service customer, for services rendered to a customer. The teachings do not disclose steps for collection of usage billing information or the use in a cloud computing environment, only a pre-processing step for displaying the results.
In U.S. Pat. No. 5,386,369 Christiano teach “License Metering System for Software Applications”. The teachings rely on a hardware dongle as “metering device” and disclose various techniques to ensure that the application metering data is accurately stored, and cannot easily be lost due to hardware failures. The teachings do not address the actual metering mechanics, the use within the context of cloud computing or application isolation.
In U.S. Pat. No. 5,708,709 Rose teach “System and Method of managing try-and-buy usage of application programs”. The teachings focus on ensuring that a user only can run applications properly licensed using a combination of encryption and verification. The teachings do not address collecting usage billing information or application isolation.
Therefore, in many systems, providing usage billing of hosted applications requires one or more of customized operating systems, customized applications, and proprietary billing infrastructure. Furthermore, the above cited references do not include or address application isolation. Hence, there is a need for systems and methods that combine application isolation with usage billing of hosted applications running on commodity operating systems such as Windows and Linux